package br.trainee.web.bo.impl;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import br.trainee.web.dao.service.ICidadeDAO;
import br.trainee.web.dao.service.IEstadoDAO;
import br.trainee.web.dao.service.ITipoTelefoneDAO;
import br.trainee.web.dao.service.old_IClinicaDAO_old;
import br.trainee.web.util.UtilFuncoes;
import br.trainee.web.vo.CidadeVO;
import br.trainee.web.vo.ClinicaVO;
import br.trainee.web.vo.EmailClinicaVO;
import br.trainee.web.vo.EnderecoClinicaVO;
import br.trainee.web.vo.EstadoVO;
import br.trainee.web.vo.TelefoneClinicaVO;
import br.trainee.web.vo.TipoTelefoneVO;

public class Old_ClinicaBO_Old  implements Serializable{
	

	private static final long serialVersionUID = 1L;
	
	
	public boolean isVetorEmailValido(String[] vetorEmails){
		
		return vetorEmails != null;
	}
	
	public List<EmailClinicaVO> carregarListaEmailsValidos(String[] vetorEmails){
		
		List<EmailClinicaVO> listaEmails = new ArrayList<EmailClinicaVO>();
		
		if(isVetorEmailValido(vetorEmails)){
			
			for (String email : vetorEmails) {
				
				if(!isEmailInvalido(email)){
					
					EmailClinicaVO emailEntrada =  new EmailClinicaVO();
					
					emailEntrada.setEmailClinica(email);
					
					listaEmails.add(emailEntrada);
				}
				
			}
			
		}
		
		return listaEmails;
	}
	
	public JSONArray converterListaCidadesJson(List<CidadeVO> listaCidades){
		
		JSONArray vetorCidades = new JSONArray();
		
		for (CidadeVO cidade : listaCidades) {
			
			JSONObject jsonCidade = new JSONObject();
			
			jsonCidade.put("idCidade", cidade.getIdCidade());
			jsonCidade.put("nomeCidade", cidade.getNomeCidade());
			
			vetorCidades.add(jsonCidade);
		}
		
		
		return vetorCidades;
	}
	
	public boolean isNomeInvalido(String nome){
		
		return UtilFuncoes.isCampoVazio(nome);
	}
	
	public boolean isCnpjInvalido(String cnpj){
		
		return UtilFuncoes.isCampoVazio(cnpj);	
	}
	
	public boolean isDddInvalido(String ddd){
		
		return UtilFuncoes.isCampoVazio(ddd);
	}
	
	public boolean isTelefoneInvalido(String telefone){
		
		return UtilFuncoes.isCampoVazio(telefone);
	}
	
	public boolean isEstadoInvalido(String estado){
		
		return UtilFuncoes.isCampoComboValido(estado);
	}
	
	public boolean isCidadeInvalida(String cidade){
	
		return UtilFuncoes.isCampoComboValido(cidade);
	}
	
	public boolean isCepInvalido(String cep){
		
		return UtilFuncoes.isCampoVazio(cep);
		
	}
	
	public boolean isEmailInvalido(String email){
		
		return UtilFuncoes.isCampoVazio(email);
	}
	
	public boolean isLogradouroInvalido(String logradouro){
		
		return UtilFuncoes.isCampoVazio(logradouro);
	}
	
	public boolean isBairroInvalido(String bairro){
		
		return UtilFuncoes.isCampoVazio(bairro);
	}
	
	public boolean isTipoValido(String tipoTelefone){
		
		return UtilFuncoes.isCampoComboValido(tipoTelefone);
	}
	
	public boolean isTelefoneCompletoValido(Integer ddd, Long telefone, Long tipoTelefone){
		
		if(ddd !=null && telefone != null && tipoTelefone != 0l){
			return true;
		}
		
		return false;
	}
	
	public boolean isTamanhoTelefoneValido(Long telefone){
		
		return UtilFuncoes.validarTamanhoMaximoTelefone(telefone);
	}
	
	public boolean isTamanhoEmailValido(String email){
		
		return UtilFuncoes.validarTamanhoMaximoEmail(email);
	}
	
	public boolean isTamanhoDddValido(Integer ddd){
		
		return UtilFuncoes.validarTamanhoMaximoDDD(ddd);
	}
	
	/*public List<EmailClinicaVO> consultarEmailsGeral(Long idClinica){
		
		return clinicaDao.consultarEmailsGeral(idClinica);
	}
	
	public List<EnderecoClinicaVO> consultarEnderecosGeral(Long idClinica){
		
		return clinicaDao.consultarEnderecosGeral(idClinica);
	}
	
	public List<TelefoneClinicaVO> consultarTelefonesGeral(Long idClinica){
		
		return clinicaDao.consultarTelefoneGeral(idClinica);
	}
	
	public boolean excluirClinica(Long idClinica){
		
		return clinicaDao.excluir(idClinica);
	}
	
	public boolean excluirEmailClinica(Long idEmailClinica){
		
		return clinicaDao.excluirEmail(idEmailClinica);
	}
	
	public boolean excluirEnderecoClinica(Long idEnderecoClinica){
		
		return clinicaDao.excluirEndereco(idEnderecoClinica);
	}
	
	public boolean excluirTelefoneClinica(Long idTelefoneClinica){
		
		return clinicaDao.excluirTelefone(idTelefoneClinica);
	}
	
public ClinicaVO consultarPorId (Long idClinica){
		
		return clinicaDao.consultarPorId(idClinica);
	}
	
	public boolean alterar(ClinicaVO clinica){
		
		return clinicaDao.alterar(clinica);
	}
	
	public boolean alterarEmail (EmailClinicaVO email){
		
		return clinicaDao.alterarEmail(email);
	}
	
	public boolean alterarEndereco (EnderecoClinicaVO endereco){
		
		return clinicaDao.alterarEndereco(endereco);
	}
	
	public boolean alterarTelefone (TelefoneClinicaVO telefone){
		
		return clinicaDao.alterarTelefone(telefone);
	}
	
	public EmailClinicaVO consultarEmailPorId(Long idEmail){
		
		return clinicaDao.consultarEmailPorId(idEmail);
	}
	
	public EnderecoClinicaVO consultarEnderecoPorId(Long idEndereco){
		
		return clinicaDao.consultarEnderecoPorId(idEndereco);
	}
	
	public TelefoneClinicaVO consultarTelefonePorId(Long idTelefone){
		
		return clinicaDao.consultarTelefonePorId(idTelefone);
	}
	
public boolean incluirClinica(ClinicaVO clinica){
		
		return clinicaDao.incluir(clinica);
	}
	
	public ClinicaVO consultarFotoPorId(Long idClinica){
		
		return clinicaDao.consultarFotoPorId(idClinica);
	}
	
	/*public List<EstadoVO> consultarTodosEstados(){
		
		return estadoDao.consultarTodos();
	}*/
	
	/*public ClinicaVO consultarFotoClinica(Long idClinica){
		
		return clinicaDao.consultarFotoPorId(idClinica);
	}
	
	public ClinicaVO detalharClinica(Long idClinica){
		
		return clinicaDao.detalharClinica(idClinica);
	}
	
	public List<ClinicaVO> consultarTodosClinica(String nome, String cnpj){
		
		return clinicaDao.consultarTodosClinica(nome, cnpj);
	}
	
	/*public List<TipoTelefoneVO> consultarTodosTiposTelefones(){
		
		return tipoTelefoneDao.consultarTodos();
	}
	
	public List<CidadeVO> consultarCidadePorEstado(Long idEstado){
		
		return cidadeDao.consultarCidadePorEstado(idEstado);
	}*/
	
}
